[% setvar title The Perl 6 Summary of the week ending 20031102 %]
<div id="archive-notice">
    <h3>This file is part of the Perl 6 Archive</h3>
    <p>To see what is currently happening visit <a href="http://www.perl6.org/">http://www.perl6.org/</a></p>
</div>
<div class='pod'>
<a name='The Perl 6 Summary of the week ending 20031102'></a><h1>The Perl 6 Summary of the week ending 20031102</h1>
<p>It's Monday morning, the croissants have been baked, the focaccia is
glistening with all the extra virgin olive oil I poured on it as it
left the oven and, in the airing cupboard, a raisin borodinsky
slouches towards full proof (thought at the rate it's currently rising
it'll probably be Tuesday before I can bake it off), what better time
could there be to pause and write a summary?</p>
<p>So, I'll kick off with perl6-internals because, well, it's on the
summary checklist (which goes something like: 1. Wibble about the
weather or something before; 2. Start with perl6-internals;
3. Continue with perl6-language if it saw any traffic; 4. Make
announcements, suggest people give money to the Perl Foundation;
5. Make sure Leon Brocard gets a mention; 6. Aspell; 7. Mail PODs to
<a href='http://perl.com' target='_blank'>perl.com</a> and a text version to perl6-announce; 8. Profit!)</p>
<a name='NULL Px Proposal'></a><h2>NULL Px Proposal</h2>
<p>Right at the end of the previous week, Melvin Smith suggested having
the initial 'empty' PMC registers all point at a global PMCNull which
would throw an exception if you tried to invoke any of its
methods. Which sounds weird, but it does mean that you get a real
exception instead of a segfault, and exceptions are so much more
trappable. Dan liked the idea.</p>
<p>Melvin later posted a patch implementing the idea, which Leo
T&ouml;tsch fixed up slightly an applied.</p>
<p><a href='http://groups.google.com/groups?threadm=Pine.LNX.4.58.0310270957360.16137@sprite.sidhe.org' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?threadm=5.1.1.6.2.20031027223024.030e2f28@pop.mindspring.com' target='_blank'>groups.google.com</a></p>
<a name='Parrot Calling Convention Confusion'></a><h2>Parrot Calling Convention Confusion</h2>
<p>Steve Fink is having problems using an unprototyped call to a
prototyped function, which he thinks is a reasonable thing to do (and
I think I agree with him; I can imagine cases where you have a
function pointer or something where you don't know its exact
prototype, but you do want to make a call to it so you'd be forced to
make an unprototyped call.). Melvin Smith disagrees with him. Steve
then went on to point out that he's still getting failures when the
function is both declared and called in an unprototyped
fashion. According to Leo, this is because unprototyped returns are
neither defined nor implemented. Which is odd really -- I thought they
were exactly the same as an unprototyped call, but you invoke the
return continuation (P1) instead of P0, the other registers are set up
exactly as if you were making an unprototyped function call.</p>
<p><a href='http://groups.google.com/groups?threadm=20031027022503.GC26642@foxglove' target='_blank'>groups.google.com</a></p>
<a name='A clash of symbols'></a><h2>A clash of symbols</h2>
<p>Arthur Bergman, Ponie stablemaster, popped up to point out that
definitions like</p>
<pre>    #define version obj.version</pre>
<p>(found in <b><i>include/parrot/pobj.h</i></b> if you're interested) did some
scary things to <code>Perl_utilize</code> in the Perl 5 core. Steve Fink stuck
his hand up to being the person who added the version field (which is
apparently rather handy if you're debugging the Garbage Collection
(GC) system. Leo fixed things by applying a
<code>s/version/pobj_version/g</code> patch.</p>
<p><a href='http://groups.google.com/groups?threadm=B28BFBAA-0872-11D8-AC29-000A95A2734C@nanisky.com' target='_blank'>groups.google.com</a></p>
<a name='Storing external data in PMCs'></a><h2>Storing external data in PMCs</h2>
<p>Arthur popped up again asking for help with implementing a
Perl5LVALUE PMC. It turns out that the API doesn't quite support what
he needs. After a certain amount of discussion of various options
Arthur proposed a <code>Parrot_PMC_attach_data(Parrot, PMC, *void)</code>
extension to the API. He didn't *quite* get what he wanted, but he
got something very like it later in the week.</p>
<p>I did like Arthur's reasons for starting the serious Ponie effort by
working on Perl5LVALUEs though: &quot;[because] it is so obscure that it's
hardly used anywhere and is limited to a few small areas in the
core&quot;.</p>
<p><a href='http://groups.google.com/groups?threadm=BF3DE234-088D-11D8-AC29-000A95A2734C@nanisky.com' target='_blank'>groups.google.com</a></p>
<a name='Screaming Pumpkins Ahoy!'></a><h2>Screaming Pumpkins Ahoy!</h2>
<p>On Monday, Leo declared that yes, Melvin Smith's proposed Halloween
'Screaming Pumpkin' Parrot release would be happening. Various people
promised extra goodies, and a few problems were sorted out with some
platforms.</p>
<p>Features were frozen on Wednesday and Parrot 0.0.13 &quot;Screaming
Pumpkin&quot; was released upon a cowering world at 2003103114:11:46
precisely. For all the astonishing speed of the release cycle, there's
a lot of good stuff to be had in the screaming pumpkin, check out
Leo's announcement for details.</p>
<p><a href='http://groups.google.com/groups?threadm=200310271653.h9RGrSv18022@thu8.leo.home' target='_blank'>groups.google.com</a></p>
<p><a href='http://groups.google.com/groups?threadm=3FA26DA2.8030000@toetsch.at' target='_blank'>groups.google.com</a> -- Leo's announcement</p>
<a name='Header Dependencies'></a><h2>Header Dependencies</h2>
<p>J&uuml;rgen B&ouml;mmels wasn't entirely happy with the way
Parrot's headers are set up. Apparently there are some nasty
dependency (and crypto dependency) issues. He proposed fixing up the
headers as much as possible to eliminate these issues. Dan and Leo
thought it would be nice, but Dan thought there wouldn't be that much
point in doing it as things would probably decay, and pretty much
everything internal should just be using <b><i>parrot.h</i></b>, and
everything external should be using <b><i>extend.h</i></b> or <b><i>embed.h</i></b>.</p>
<p><a href='http://groups.google.com/groups?threadm=m2ekwysiyb.fsf@helium.physik.uni-kl.de' target='_blank'>groups.google.com</a></p>
<a name='Tinderboxen'></a><h2>Tinderboxen</h2>
<p>J&uuml;rgen B&ouml;mmels triggered a quick bout of tinderbox
fixing, as various different hardware experts helped to figure out
why several of the tinderboxes weren't building and testing
successfully. Jonathan Worthington submitted a few patches to clean
up the various Win32 warnings. David Robins submitted similar patches
to clean up some Solaris warnings.</p>
<p><a href='http://groups.google.com/groups?threadm=m2ad7msdym.fsf@helium.physik.uni-kl.de' target='_blank'>groups.google.com</a></p>
<a name='Wrapping C/C++ libraries'></a><h2>Wrapping C/C++ libraries</h2>
<p>Anuradha Ratnaweera asked a bunch of questions about how Parrot and
Perl 6 would interface to external C and C++ libraries. The Leo and
Dan provided the answers.</p>
<p><a href='http://groups.google.com/groups?threadm=1067318653.12593.48.camel@aratnaweera.enetsl.virtusa.com' target='_blank'>groups.google.com</a></p>
<a name='Broken Windows'></a><h2>Broken Windows</h2>
<p>(Sorry about the heading, I couldn't resist). Jonathan Worthington
reported some breakage of NCI on Win32. He and Leo worked through the
issues in search of a fix.</p>
<p><a href='http://groups.google.com/groups?threadm=007301c39d78$3dd6a7a0$aa866f83@jwcsjw' target='_blank'>groups.google.com</a></p>
<a name='Garbage-collecting classes'></a><h2>Garbage-collecting classes</h2>
<p>Luke Palmer responded to the comment in last week's summary about the
way to instantiate an object in class Foo being:</p>
<pre>    new P5, .Foo</pre>
<p>He worried that, because classes are now simply integers, there was
no way to garbage collect class objects if anonymous classes were
used heavily. Jeff Clites, Leo and Dan all rushed to reassure him.</p>
<p><a href='http://groups.google.com/groups?threadm=20031028235628.GA14714@babylonia.flatirons.org' target='_blank'>groups.google.com</a></p>
<a name='Parrot IO Fun'></a><h2>Parrot IO Fun</h2>
<p>On Thursday, Melvin Smith announced that Parrot had fetched its first
web page. Your parrot can fetch webpages too, just update to the
latest, check out <b><i>examples/io/http.imc</i></b> and the world is
yours. Everyone made impressed noises.</p>
<p><a href='http://groups.google.com/groups?threadm=5.1.1.6.2.20031030014814.08673e80@pop.mindspring.com' target='_blank'>groups.google.com</a></p>
<a name='Melvin Smith, tease of the week'></a><h2>Melvin Smith, tease of the week</h2>
<p>Melvin announced that, in his personal copy of Parrot he has most of
the Class metadata declaration support working, but that he wouldn't
release it 'til after the Screaming Pumpkin release. If it's as good
as he promised, I guess we can wait.</p>
<p><a href='http://groups.google.com/groups?threadm=5.1.1.6.2.20031031010024.08e72a30@pop.mindspring.com' target='_blank'>groups.google.com</a></p>
<a name='Character classification functions'></a><h2>Character classification functions</h2>
<p>Noting the presence of the <code>is_digit</code> function, Peter Gibbs wondered
if it would be useful to have a set of <code>is_foo</code> functions, or better
to have a single <code>is_ctype</code> function with an enum parameter. He
preferred the <code>is_ctype</code> option, and set about implementing it. Ever
the speed demon, Dan thought it best to have a reasonable set of
<code>is_foo</code> functions for 'common' chartypes and a fallback <code>is_ctype</code>
function for the rest. Once they were all wrapped up in sensible
macros that would mean that you didn't have the possibility of a very
small speed hit getting multiplied up in the middle of a tight loop,
but the programmer wouldn't have to worry about which types were
checked in which fashion.</p>
<p><a href='http://groups.google.com/groups?threadm=046a01c3a08e$03fdf100$c701010a@peter' target='_blank'>groups.google.com</a></p>
<a name='Moving to a new PMC compiler'></a><h2>Moving to a new PMC compiler</h2>
<p>Leo T&ouml;tsch posted a patch to switch Parrot over to using
pmc2c2, the new version of the PMC compiler, but didn't commit it
because his Makefile was playing up. He asked for some help to fix
that before the patch could be committed.</p>
<p><a href='http://groups.google.com/groups?threadm=rt-24388-66958.8.08917746394357@rt.perl.org' target='_blank'>groups.google.com</a></p>
<a name='Summary suggestion'></a><h2>Summary suggestion</h2>
<p>Ron Grunwald suggested that it might be a good idea to include a
glossary with each summary explaining what IMCC, PMC and PIR stand for
(um... Incredibly Magnificent Compiler Compiler(?), Parrot Magic
Cookie and Parrot Intermediate Representation(?) respectively) and
maybe giving some explanation of other bits of Parrot jargon. Which
is a jolly good idea. But laziness dictates that, instead I point you
all at <b><i>docs/glossary.pod</i></b> which, following a gentle nudge on the
mailing list, covers the above acronyms and more (but sadly some of
'em are missing from the Screaming Pumpkin release).</p>
<p><a href='http://groups.google.com/groups?threadm=m2ekwqlofv.fsf@huge.bofh.org.uk' target='_blank'>groups.google.com</a></p>
<a name='Meanwhile, in perl6-language'></a><h1>Meanwhile, in perl6-language</h1>
<p>There was some real traffic. With questions. And Answers! What is the
world coming to? Admittedly, there were only 10 posts in the week,
but it's the <i>quality</i> that counts.</p>
<a name='Alternately named arguments'></a><h2>Alternately named arguments</h2>
<p>Remember last week, when Luke &quot;Edgecase finder general&quot; Palmer asked
about named return values and made David Storrs boggle? This week he
was answered. By Damian. And Larry. Any question that elicits a
&quot;Please, no!&quot; from Damian has got to be a good question methinks.</p>
<p>The question revolves around the statement in Apocalypse 6 that a
list on the left hand side of a binding operator (<code>:=</code>) is
interpreted in the same way as a function signature. Which means that
you can use 'named' binding:</p>
<pre>   (who =&gt; $name, why =&gt; $reason) := (why =&gt; $because, who =&gt; &quot;me&quot;);
   # ($name == &quot;me&quot;) &amp;&amp; ($reason = $because)</pre>
<p>What elicited the &quot;Please, no!&quot; was Luke's logical conclusion that
this could also mean that you could do:</p>
<pre>   (+$name, +$id) := getinfo();</pre>
<p>and the unary <code>+</code> would be treated as a 'named only' marker in the
same way it would be in a function signature.</p>
<p>Interestingly, Larry was less convinced that this was inherently a
bad thing, though he did propose that, under most forms of stricture
that it should only work in the case of:</p>
<pre>   my(+$name, +$id) := getinfo();</pre>
<p>because the <code>my</code> helps the reader to realise that <code>+</code> may not be in
Kansas any more without having to reach the <code>:=</code> and then
reinterpret everything that went before. (If you've heard Damian,
Allison or possibly even Larry talking about Perl 6, you've almost
certainly come up against the concept of &quot;end weight&quot;; this is an
example).</p>
<p><a href='http://groups.google.com/groups?threadm=3F9C6F5C.3020906@conway.org' target='_blank'>groups.google.com</a></p>
<a name='State of the Conway'></a><h2>State of the Conway</h2>
<p>It's been a while since Damian said anything in perl6-language, so
David Wheeler welcomed both him and Larry back. Damian thanked him,
and posted a short status report. While he's not been in quite the
same state as Larry, &quot;mild influenza and a little light pneumonia&quot;
don't sound like a barrel of laughs either. Anyway, he's back on the
case when he can spare the time from putting food on the table.</p>
<p><a href='http://groups.google.com/groups?threadm=3F9DA3BB.9080106@conway.org' target='_blank'>groups.google.com</a></p>
<a name='Questions about currying'></a><h2>Questions about currying</h2>
<p>Joe Gottman had some questions about currying. Luke Palmer and
Jonathan Scott Duff answered 'em. I'm getting quite good at this
summarizing malarkey aren't I?</p>
<p><a href='http://groups.google.com/groups?threadm=002d01c39e85$b74fb8c0$42404a18@carolina.rr.com' target='_blank'>groups.google.com</a></p>
<a name='Acknowledgements, Announcements, Apologies'></a><h1>Acknowledgements, Announcements, Apologies</h1>
<p>Whee! Monday is this week's Monday! What's the betting I can keep it
up?</p>
<p>Those of you who've been reading this summary since almost the
beginning will remember that I copped the basic 'chunks of text
followed by a link or two' format/structure(hah!) of these summaries
from NTK. Well, this Friday's NTK had some coverage of the state of
Larry and Damian's health in their HARD NEWS section
(<a href='http://www.ntk.net/2003/10/31/).' target='_blank'>www.ntk.net</a></p>
<p>If you found this summary valuable, please consider one or more of:</p>
<ul>
<li><a name='Join in! The project needs people. dev/perl.org/perl6/ and www.parrotcode.org/ are good starting points for information.'></a>Join in! The project needs people. <a href='http://dev/perl.org/perl6/' target='_blank'>dev</a> and
<a href='http://www.parrotcode.org/' target='_blank'>www.parrotcode.org</a> are good starting points for
information.</li>
<li><a name='Chip in! Money helps keep the wheels turning, programmers like Larry, Dan and Damian have families to feed and medical bills to pay, finding that money takes time away from getting Perl 6 out of the door. By donating money to The Perl Foundation donate.perl-foundation.org/ you can help.'></a>Chip in! Money helps keep the wheels turning, programmers like Larry,
Dan and Damian have families to feed and medical bills to pay,
finding that money takes time away from getting Perl 6 out of the
door. By donating money to The Perl Foundation
<a href='http://donate.perl-foundation.org/' target='_blank'>donate.perl-foundation.org</a> you can help.</li>
<li><a name='Chime in! It's always good to get direct feedback from readers. Drop me a line to let me know what you think at mailto:<a href='mailto:p6summarizer@bofh.org.uk'>p6summarizer@bofh.org.uk</a>, I promise I'll reply (assuming it's not spam, in which case I shall simply wish recurrent hemorrhoids on you).'></a>Chime in! It's always good to get direct feedback from readers. Drop
me a line to let me know what you think at
mailto:<a href='mailto:p6summarizer@bofh.org.uk'>p6summarizer@bofh.org.uk</a>, I promise I'll reply (assuming it's
not spam, in which case I shall simply wish recurrent hemorrhoids on
you).</li>
</ul>
</div>
